

import os
import shutil
from datetime import datetime
import time
from glob import glob


#python删除文件的方法 os.remove(path)path指的是文件的绝对路径,如：
def del_file(path_data):
    for i in os.listdir(path_data) :# os.listdir(path_data)#返回一个列表，里面是当前目录下面的所有东西的相对路径
        file_data = path_data  + i#当前文件夹的下面的所有东西的绝对路径
        if os.path.isfile(file_data) == True:#os.path.isfile判断是否为文件,如果是文件,就删除.如果是文件夹.递归给del_file.
            os.remove(file_data)
        else:
            del_file(file_data)


# 找到 最新文件
def find_max_flie(src_dir):

    # src_dir = './root/'  # 文件路径

    src_file_list = glob(src_dir + ("/*.pth"))  # glob获得路径下所有文件，可根据需要修改

    time_list = []  # 时间
    file_dirlist = []  # 文件 名字

    for srcfile in src_file_list:
        # print(srcfile)
        # print(os.path.getmtime(srcfile))  # 输出最近修改时间

        # print(time.ctime(os.path.getmtime(srcfile)))  # 以struct_time形式输出最近修改时间

        time_list.append(os.path.getmtime(srcfile))  # 时间

        file_dirlist.append(srcfile)  # 名字

    # print(time_list)
    if len(time_list)>0:
        time_list_max = time_list.index(max(time_list))  # 要复制 文件的下标

        srcfile = file_dirlist[time_list_max]  # 要复制 文件的下标 地址

        print(srcfile)

        return srcfile
    else:
        return 0
   

# 复制函数
def mycopyfile(srcfile,dstpath):
    if not os.path.isfile(srcfile):
        print ("%s not exist!"%(srcfile))
    else:
        fpath,fname=os.path.split(srcfile)             # 分离文件名和路径
        if not os.path.exists(dstpath):
            os.makedirs(dstpath)                       # 创建路径
        shutil.copy(srcfile, dstpath + fname)          # 复制文件
        print ("copy %s -> %s"%(srcfile, dstpath + fname))





#从model文件夹  复制 出来----------------------------------------
model_dir='/project/train/models/'
pre_dir='/project/train/src_repo/mmdetection/work_save_dir/'

srcfile=find_max_flie(model_dir) ## 找到 最新文件

if srcfile != 0:
    del_file(pre_dir)  # 清空 文件夹 下文件

    mycopyfile(srcfile, pre_dir)  # 复制文件
 


cp_nmb=0

start_time=time.time() # 开始时间

time1= time.time()

stop_h=11.5 # 多少小时后 就停止
c_h=0.001 # 每过几小时  就进行复制一次

src_dir = '/project/train/src_repo/mmdetection/work_dir/'  # 要复制的路径
dst_dir = '/project/train/models/'  # 目的路径 记得加斜杠

while True:
    time2 = time.time()
    end = time2 - time1
    num_h = ((float(end) * 1000.0) / 1000 / 60 / 60)  # 小时 差


    break_h = ((float(time2-start_time) * 1000.0) / 1000 / 60 / 60)  # 小时 差


    if (num_h>=c_h): # 每过几小时  就进行复制一次
        print('小时 差:', num_h)
        print("到 小时了，开始复制")

        srcfile=find_max_flie(src_dir) ## 找到 最新文件

        if srcfile!=0:
            del_file(dst_dir)  # 清空 文件夹 下文件

            mycopyfile(srcfile, dst_dir)  # 复制文件

        time1= time.time()
        cp_nmb+=1
        print(cp_nmb)

    if (break_h>=stop_h):
        print('break_h:', break_h)
        time_2 = time.localtime()
        time_2_struct = time.strftime("break: %Y-%m-%d %H:%M:%S", time_2)
        print(time_2_struct)
        break

time_2 = time.localtime()
time_2_struct = time.strftime("1. %Y-%m-%d %H:%M:%S", time_2)
print("----:",time_2_struct)



  